home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 6: Level 6 / 17 Bit - Level 6 (1998)(Epic Marketing)[!].iso / quartz / q0429.dms / q0429.adf / libray / libcommon / common.h < prev    next >
C/C++ Source or Header  |  1992-05-20  |  2KB  |  119 lines

  1. /*
  2.  * common.h
  3.  *
  4.  * Copyright (C) 1989, 1991, Craig E. Kolb
  5.  * All rights reserved.
  6.  *
  7.  * This software may be freely copied, modified, and redistributed
  8.  * provided that this copyright notice is preserved on all copies.
  9.  *
  10.  * You may not distribute this software, in whole or in part, as part of
  11.  * any commercial product without the express consent of the authors.
  12.  *
  13.  * There is no warranty or other guarantee of fitness of this software
  14.  * for any purpose.  It is provided solely "as is".
  15.  *
  16.  * $Id: common.h,v 4.0.1.1 91/11/26 21:34:27 cek Exp Locker: cek $
  17.  *
  18.  * $Log:    common.h,v $
  19.  * Revision 4.0.1.1  91/11/26  21:34:27  cek
  20.  * patch3: Added EPSILON definition, redefine equal() macro.
  21.  * 
  22.  * Revision 4.0  91/07/17  14:30:18  kolb
  23.  * Initial version.
  24.  * 
  25.  */
  26. #ifndef COMMON_H 
  27. #define COMMON_H
  28.  
  29. #include <stdio.h>
  30. #include <math.h>
  31. #ifdef I_STDLIB
  32. #include <stdlib.h>
  33. #endif
  34. #include "config.h"
  35.  
  36. typedef double Float;
  37.  
  38. #if (VOIDFLAGS & 8) == 8
  39. typedef void * voidstar;
  40. #else
  41. typedef char * voidstar;
  42. #endif
  43.  
  44. #include "expr.h"
  45. #include "vector.h"
  46. #include "ray.h"
  47. #include "color.h"
  48. #include "transform.h"
  49. #include "error.h"
  50.  
  51. #ifndef TRUE
  52. #define TRUE        1
  53. #endif
  54.  
  55. #ifndef FALSE
  56. #define FALSE        0
  57. #endif
  58.  
  59. /*
  60.  * Various useful constants and macros.
  61.  */
  62.  
  63. /*
  64.  * Minimum vector length & fp value.
  65.  * Modify depending upon Float typedef.
  66.  */
  67. #define EPSILON        (Float)0.00001
  68.  
  69. #ifndef PI
  70. #define    PI        3.14159265358979323846
  71. #endif
  72. #define TWOPI        (2. * PI)
  73. #define INV_TWOPI    (1. / TWOPI)
  74. #define deg2rad(x)    (Float)(x * PI/180.)
  75. #define LNHALF        (-.69314718)
  76.  
  77. #ifndef NULL
  78. #    define NULL 0
  79. #endif
  80.  
  81. #define UNSET        -1
  82.  
  83. /*
  84.  * Some systems, such as the RS6000, have fast fabs already defined.
  85.  */
  86. #ifndef fabs
  87. extern Float RSabstmp;
  88. #define fabs(x)         ((RSabstmp=x) < 0 ? -RSabstmp : RSabstmp)
  89. #endif
  90.  
  91. #ifdef MULTIMAX
  92. /*
  93.  * On the multimax, allocate large pieces of memory as shared memory.
  94.  */
  95. extern char *share_malloc(), *share_calloc();
  96. #else
  97. /*
  98.  * Otherwise, malloc is malloc, etc.
  99.  */
  100. #define share_malloc(x)        Malloc(x)
  101. #define share_calloc(x,y)    Calloc(x,y)
  102. #endif
  103.  
  104. /*
  105.  * Close enough for us.
  106.  */
  107. #define equal(a, b)        (fabs((a) - (b)) < EPSILON)
  108. /*
  109.  * Maximum/Minimum functions
  110.  */
  111. #define max(a, b)        ((a) > (b) ? (a) : (b))
  112. #define min(a, b)        ((a) < (b) ? (a) : (b))
  113.  
  114. extern voidstar Malloc(), Calloc();
  115. extern char    *strsave();
  116. extern double    drand48();    /* just in case */
  117.  
  118. #endif /* COMMON_H */
  119.